package cn.wolfcode.trip.base.service;

import cn.wolfcode.trip.base.domain.Order;
import cn.wolfcode.trip.base.query.OrderQueryObject;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * 订单服务接口
 *
 * @author Lyu
 */
public interface IOrderService {
    /**
     * 分页查询订单
     *
     * @param qo 条件
     * @return 商品列表
     */
    PageInfo<Order> queryForList(OrderQueryObject qo);

    /**
     * 新增或保存订单
     */
    void saveOrUpdate(Long userId, Long goodsId, Integer totalIntegral, Integer state);

    /**
     * 通过用户id查询状态为已加购的订单
     *
     * @param userId 用户id
     * @param state  已加购
     * @return 订单
     */
    List<Order> getOrderByUserId(Long userId, Integer state);

    /**
     * 批量更新状态
     */
    void updateBatch(Long[] ids, Integer state, Integer totalIntegral, Long userId);

    /**
     * 删除购物车订单
     *
     * @param id 订单id
     */
    void deleteOrder(Long id);

    /**
     * 通过订单id, 修改订单总积分
     *
     * @param order x
     */
    void updateTotalIntegralById(Order order);
}
